<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        window.onload = function () {
            /*
                拖拽box1元素
                    -拖拽的流程
                    1.当鼠标在被拖拽元素上按下时，开始拖拽 onmousedown
                    2.当鼠标移动时，拖拽元素跟随鼠标移动   onmousemove
                    3.当鼠标松开时，被拖拽元素固定在当前位置 onmouseup
            */
            //获取Box1
            var box1 = document.getElementById("box1");
            var box2 = document.getElementById("box2");
            drag(box1);
            drag(box2);
        };
        function drag(obj) {
            //当鼠标在被拖拽元素上按下时，开始拖拽 onmousedown
            obj.onmousedown = function (event) {
                event = event || window.event;

                // box1.setCapture(); iE 支持

                //div的偏移量 鼠标.clientX - 元素.offsetLeft
                //div的偏移量 鼠标.clientY - 元素.offsetTop
                var ol = event.clientX - obj.offsetLeft;
                var ot = event.clientY - obj.offsetTop;
                //为document绑定一个onmousemove事件
                document.onmousemove = function (event) {
                    event = event || window.event;
                    //当鼠标移动时，拖拽元素跟随鼠标移动   onmousemove
                    //获取鼠标的坐标
                    var left = event.clientX - ol;
                    var top = event.clientY - ot;
                    //修改box1的位置
                    obj.style.left = left + "px";
                    obj.style.top = top + "px";
                };
                //为document绑定一个鼠标松开事件
                document.onmouseup = function () {
                    //当鼠标松开时，被拖拽元素固定在当前位置 onmouseup
                    //取消 document的onmousemove事件
                    document.onmousemove = null;
                    //取消 document的onmouseup事件
                    document.onmouseup = null;
                    //鼠标松开时，取消对事件的捕获
                    // box1.releaseCapture();
                };

                /*
                    当我们拖拽一个网页中的内容时，浏览器会默认去搜索引擎中搜索内容
                    此时会导致拖拽功能的异常，这个是浏览器提供的默认行为
                    如果不希望发生这个行为，则可以通过return false 来取消默认
                */
                return false
            };
        };
    </script>
    <style>
        #box1 {
            width: 100px;
            height: 100px;
            background-color: red;
            position: absolute;
        }

        #box2 {
            width: 100px;
            height: 100px;
            background-color: yellow;
            position: absolute;
            left: 200px;
            top: 200px;
        }
    </style>
</head>

<body>
    文字
    <div id="box1"></div>
    <div id="box2"></div>
</body>

</html>